package controller;

import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import model.ICliente;
import view.ClienteGUI;

public class ClienteCtrl implements IClienteCtrl{
    
    private ICliente model;
    private ClienteGUI clienteGUI;

    public ClienteCtrl(ICliente model) {
        this.model = model;
        clienteGUI = new ClienteGUI(model, this);
        clienteGUI.criarTela();
    }
    
    private void setCliente(int codigo, String nome, String endereco, String email, String bairro, String cidade, String cep, 
            String uf, String fone, String celular, String cpf, String obs, String rg, String orgaoRg, Date dataCadastro, 
            String cnpj, String auditoria) {        
        model.setNome(nome);        
        model.setCodigo(codigo);
        model.setBairro(bairro);        
        model.setCelular(celular);        
        model.setCep(cep);        
        model.setCidade(cidade);        
        model.setCnpj(cnpj);        
        model.setOrgaoRg(orgaoRg);        
        model.setCpf(cpf);       
        model.setDataCadastro(dataCadastro);
        model.setEmail(email);        
        model.setEndereco(endereco);                
        model.setFone(fone);        
        model.setNome(nome);        
        model.setObs(obs);                       
        model.setRg(rg);        
        model.setUf(uf);
        model.setAuditoria(auditoria);
    }
    
    @Override
    public void inserir(int codigo, String nome, String endereco, String email, String bairro, 
            String cidade, String cep, String uf, String fone, String celular, String cpf, String obs, 
            String rg, String orgaorg, Date dataCadatro, String cnpj, String fax, String contato, 
            String auditoria) {
        setCliente(codigo, nome, endereco, email, bairro, cidade, cep, uf, fone, celular, 
                cpf, obs, rg, orgaorg, dataCadatro, cnpj, auditoria);        
        model.setProximoCodigo();                               
        model.inserir();        
    }
       
    @Override
    public void atualizar(int codigo, String nome, String endereco, String email, String bairro, 
            String cidade, String cep, String uf, String fone, String celular, String cpf, String obs, 
            String rg, String orgaorg, Date dataCadatro, String cnpj, String fax, String contato, 
            String auditoria) {
        setCliente(codigo, nome, endereco, email, bairro, cidade, cep, uf, fone, celular, 
                cpf, obs, rg, orgaorg, dataCadatro, cnpj, auditoria);        
        model.atualizar();        
    }
            
    @Override
    public void excluir(int codigo){
        model.setCodigo(codigo);
        model.excluir();
    }
    
    @Override
    public ArrayList pesquisar(int iOpcao, String iPesquisa) {        
        ArrayList<ICliente> clientes = model.pesquisar(iOpcao, iPesquisa);
        ArrayList lstTemp = new ArrayList();
        ICliente clienteTemp;
        Iterator i = clientes.iterator();
        SimpleDateFormat formData = new SimpleDateFormat("dd/MM/yyyy");        
        while (i.hasNext()) {
            clienteTemp = (ICliente) i.next();                                             
            lstTemp.add(new String[]{String.valueOf(clienteTemp.getCodigo()), clienteTemp.getNome(),
                clienteTemp.getCnpj(),clienteTemp.getRg(),clienteTemp.getOrgaoRg(),clienteTemp.getCpf(),
                clienteTemp.getEndereco(),clienteTemp.getBairro(),clienteTemp.getCidade(),
                clienteTemp.getUf(),clienteTemp.getCep(),formData.format(clienteTemp.getDataCadastro()),
                clienteTemp.getObs(),clienteTemp.getAuditoria()});       
        }
        return lstTemp;   
    }
    
    @Override
    public ArrayList getAll() { 
        ArrayList<ICliente> clientes = model.getAll();
        ArrayList lstTemp = new ArrayList();
        ICliente clienteTemp;
        Iterator i = clientes.iterator();
        SimpleDateFormat formData = new SimpleDateFormat("dd/MM/yyyy");        
        while (i.hasNext()) {
            clienteTemp = (ICliente) i.next();                                             
            lstTemp.add(new String[]{String.valueOf(clienteTemp.getCodigo()), clienteTemp.getNome(),
                clienteTemp.getFone(),clienteTemp.getEmail(),clienteTemp.getCelular(),
                clienteTemp.getCnpj(),clienteTemp.getRg(),clienteTemp.getOrgaoRg(),clienteTemp.getCpf(),
                clienteTemp.getEndereco(),clienteTemp.getBairro(),clienteTemp.getCidade(),
                clienteTemp.getUf(),clienteTemp.getCep(),formData.format(clienteTemp.getDataCadastro()),
                clienteTemp.getObs(),clienteTemp.getAuditoria()});       
        }
        return lstTemp;
    }    

    @Override
    public int getCodigo() {
        return model.getCodigo();
    }   
}

